from django.shortcuts import render

# Create your views here.
from rest_framework.response import Response

from goods.models import SKU

"""
当用户点击提交订单的时候,应该跳转到订单提交页面,这个页面必须是登录用户才可以访问
前端应该获取商品列表数据(地址信息的接口之前已经实现过了),前端发送一个ajax请求获取数据

# 1.前端必须把用户信息传递过来,jwt token 在请求头中,我们要做的是添加权限
# 2.从redis中获取用户id的信息(指的是购物车信息)
# hash 这里包含选中和未选中的
# set
# 3.我们要获取的是选中的信息
# 4.根据选中的商品id 查询商品详细信息
# 5.对对象列表进行序列化操作
# 6.返回响应

GET /orders/places/


"""
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from django_redis import get_redis_connection
from .serializers import CartSKUSerializer,PlaceOrderSerializer
class PlaceOrderView(APIView):

    permission_classes = [IsAuthenticated]

    def get(self,request):
        # 1.前端必须把用户信息传递过来,jwt token 在请求头中,我们要做的是添加权限
        user = request.user
        # 2.从redis中获取用户id的信息(指的是购物车信息)
        redis_conn = get_redis_connection('cart')
        # hash 这里包含选中和未选中的
        sku_id_count = redis_conn.hgetall('cart_%s'%user.id)
        # {b'1':b'4'}
        # set
        selected_ids = redis_conn.smembers('cart_selected_%s'%user.id)
        # {b'1',b'2',b'3'}
        # 3.我们要获取的是选中的信息
        selected_cart = {}
        for sku_id in selected_ids:
            selected_cart[int(sku_id)] = int(sku_id_count[sku_id])

        # 4.根据选中的商品id 查询商品详细信息
        ids = selected_cart.keys()
        skus = SKU.objects.filter(pk__in = ids)

        #我们把商品信息获取出来的时候,我们要有count,但SKU中并没有count
        #我们遍历skus的时候动态的添加count
        for sku in skus:
            sku.count = selected_cart[sku.id]

        # 5.对 对象列表 进行序列化操作
        # serializer = CartSKUSerializer(skus,many=True)
        freight = 10
        serializer = PlaceOrderSerializer({'freight':freight,
                                           'skus':skus})

        """
        "id":16,
        "name":"华为 HUAWEI P10 Plus 6GB+128GB 曜石黑 移动联通电信4G手机 双卡双待",
        "default_image_url":"http://image.meiduo.site:8888/group1/M00/00/09777651",
        "price":"3788.00",
        "count":1

        """

        # 6.返回响应
        return Response(serializer.data)
"""
当用户点击提交视图的时候,前端应给后端发送一个ajax请求,请求中包含用户信息,地址信息,支付方式
1.接收数据
2.校验数据
3.数据入库
4.返回响应

POST   /orders/

"""
from rest_framework.generics import CreateAPIView
from .serializers import OrderCommitSerializer
class OrderCreateAPIView(CreateAPIView):

    permission_classes = [IsAuthenticated]

    serializer_class = OrderCommitSerializer





